package com.woniu.cinema.service.impl;

import java.util.Arrays;
import java.util.List;

import com.woniu.cinema.dto.DynamicRequestCinemaDto;
import com.woniu.cinema.vo.CinemaVo;
import com.woniu.common.constant.UserConstants;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.woniu.cinema.mapper.CinemaMapper;
import com.woniu.cinema.domain.Cinema;
import com.woniu.cinema.service.CinemaService;

/**
 * 电影院信息Service业务层处理
 * 
 * @author yy
 * @date 2022-03-30
 */
@Service
public class CinemaServiceImpl implements CinemaService
{
    @Autowired
    private CinemaMapper cinemaMapper;

    @Autowired
    private RabbitTemplate rabbitTemplate;

    /**
     * 查询电影院信息
     * 
     * @param cinemaId 电影院信息ID
     * @return 电影院信息
     */
    @Override
    public Cinema selectCinemaById(Integer cinemaId)
    {
        return cinemaMapper.selectCinemaById(cinemaId);
    }

    /**
     * 查询电影院信息列表
     * 
     * @param cinema 电影院信息
     * @return 电影院信息
     */
    @Override
    public List<Cinema> selectCinemaList(Cinema cinema)
    {
        return cinemaMapper.selectCinemaList(cinema);
    }

    /**
     * 新增电影院信息
     * 
     * @param cinema 电影院信息
     * @return 结果
     */
    @Override
    public int insertCinema(Cinema cinema)
    {
        return cinemaMapper.insertCinema(cinema);
    }

    /**
     * 修改电影院信息
     * 
     * @param cinema 电影院信息
     * @return 结果
     */
    @Override
    public int updateCinema(Cinema cinema)
    {
        int result = cinemaMapper.updateCinema(cinema);

        //发消息给mq，通过搜索微服务更新数据
        rabbitTemplate.convertAndSend(UserConstants.MQ_ES_EXCHANGE,UserConstants.MQ_ES_CINEMA_ROUTING_KEY,cinema.getCinemaId());

        return result;
    }

    /**
     * 批量删除电影院信息
     * 
     * @param cinemaIds 需要删除的电影院信息ID
     * @return 结果
     */
    @Override
    public int deleteCinemaByIds(Integer[] cinemaIds)
    {
        return cinemaMapper.deleteCinemaByIds(cinemaIds);
    }

    /**
     * 删除电影院信息信息
     * 
     * @param cinemaId 电影院信息ID
     * @return 结果
     */
    @Override
    public int deleteCinemaById(Integer cinemaId)
    {
        return cinemaMapper.deleteCinemaById(cinemaId);
    }

    @Override
    public List<CinemaVo> dynamiclist(DynamicRequestCinemaDto cinemaDto) {

        return cinemaMapper.dynamiclist(cinemaDto);

    }

    @Override
    public List<Cinema> queryCinemaById(Integer cinemaId) {

        if(cinemaId==-1){
            return cinemaMapper.selectCinemaList(new Cinema());
        }

        Cinema cinema = cinemaMapper.selectCinemaById(cinemaId);

        return Arrays.asList(cinema);
    }
}
